package com.woohua.thread.wait;

/***
 * @title Consumer
 * @description： 消费者
 * @author woo hua
 * @version 1.0.0
 * @create 2023/3/9 13:46
 **/
public class Consumer implements Runnable {

    private TaskQueue taskQueue;

    public Consumer(TaskQueue taskQueue) {
        this.taskQueue = taskQueue;
    }

    @Override
    public void run() {
        System.out.println("Consumer run()");
        execTask();
    }

    /**
     * 消费任务
     */
    private void execTask() {
        System.out.println("Consumer execTask()");
        while (true) {
            // 获取任务，如果获取不到，会进入 wait 队列
            String task = taskQueue.removeTask();
            // 任务不为 bull 则模拟执行
            if (null != task) {
                System.out.println(task + " be done. Caller is " + Thread.currentThread().getName());
            }
        }
    }
}
